package org.example.mapper;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.example.pojo.Brand;

import java.util.List;
import java.util.Map;

public interface BrandMapper {
    /**
     * 查询所有
     */
    List<Brand> selectAll();

    /**
     * 查看详情  根据id
     */

    Brand selectById(int id);


    /**
     * 条件查询
     * *参数接收
     * * * 1. 散装参数，使用@Param("SQL参数占位符名称")修改Map集合中默认键名
     * List<Brand> selectByCondition(@Param("status") int status,
     * @Param("companyName") String companyName, @Param("brandName") String brandName);
     * * * 2. 对象参数：对象的属性名要和参数占位符名称一致
     * List<Brand> selectByCondition(Brand brand);
     * * * 3. map集合参数
     * List<Brand> selectByCondition(Map map);
     *
     * @param status
     * @param companyName
     * @param brandName
     * @return
     */

    List<Brand> selectByCondition(Map map);


    /**
     * 单条件动态查询
     *
     * @param brand
     * @return
     */
    List<Brand> selectByConditionSingle(Brand brand);

    /**
     * 添加
     */
    void add(Brand brand);

    /**
     * 修改
     */
    int update(Brand brand);

    /**
     * 根据id删除
     */
    void deleteById(int id);

    /**
     * 批量删除
     */
    void deleteByIds(@Param("ids") int[] ids);

    /**
     * 注解开发(简单语句)
     * 使用注解来映射简单语句会使代码显得更加简洁，但对于稍微复杂一点的语句，Java 注解不仅力不从心，
     * 还会让本就复杂的 SQL 语句更加混乱不堪。 因此，如果你需要做一些很复杂的操作，最好用 XML 来映射语句。
     */
    @Select("select * from tb_brand where id = #{id}")
    Brand selectById2(int id);
}
